c5da806c65de0da878389cc8d2f2fbf457961887,ardor3d-jogl/src/main/java/com/ardor3d/renderer/jogl/JoglRenderer.java,JoglRenderer,setupInterleavedDataVBO,#FloatBufferData#FloatBufferData#FloatBufferData#FloatBufferData#List#,1121
Before Change
enabledTextures &= ~(2 << i);
// disable state
gl.getGL2GL3().glDisableClientState(GLPointerFunc.GL_TEXTURE_COORD_ARRAY);
continue;
}
} else {
checkAndSetTextureArrayUnit(i, gl, rendRecord, caps);
// grab a vboID and make sure it exists and is up to date.
final FloatBufferData textureBufferData = textureCoords.get(i);
updateVBO(textureBufferData, rendRecord, vboID, offsetBytes);
if (!valid || !wasOn) {
// enable bit in tracking int
enabledTextures |= (2 << i);
// enable state
gl.getGL2GL3().glEnableClientState(GLPointerFunc.GL_TEXTURE_COORD_ARRAY);
}
// send data
if (gl.isGL2ES1()) {
gl.getGL2ES1().glTexCoordPointer(textureBufferData.getValuesPerTuple(), GL.GL_FLOAT, 0,
offsetBytes);
}
offsetBytes += textureBufferData.getBufferLimit() * 4;
}
}
}
rendRecord.setEnabledTextures(enabledTextures);
rendRecord.setTexturesValid(true);
}
if (vertexCoords != null) {
updateVBO(vertexCoords, rendRecord, vboID, offsetBytes);
if (gl.isGL2ES1()) {
gl.getGL2ES1().glVertexPointer(vertexCoords.getValuesPerTuple(), GL.GL_FLOAT, 0, offsetBytes);
}
gl.getGL2GL3().glEnableClientState(GLPointerFunc.GL_VERTEX_ARRAY);
} else {
gl.getGL2GL3().glDisableClientState(GLPointerFunc.GL_VERTEX_ARRAY);
}
After Change
}
offsetBytes += colorCoords.getBufferLimit() * 4;
} else {
if (gl.isGL2GL3()) {
gl.getGL2GL3().glDisableClientState(GLPointerFunc.GL_COLOR_ARRAY);
}
}
if (textureCoords != null) {
final TextureState ts = (TextureState) context.getCurrentState(RenderState.StateType.Texture);
int enabledTextures = rendRecord.getEnabledTextures();
final boolean valid = rendRecord.isTexturesValid();
boolean exists, wasOn;
if (ts != null) {
final int max = caps.isMultitextureSupported() ? Math.min(caps.getNumberOfFragmentTexCoordUnits(),
TextureState.MAX_TEXTURES) : 1;
for (int i = 0; i < max; i++) {
wasOn = (enabledTextures & (2 << i)) != 0;
exists = textureCoords != null && i < textureCoords.size() && textureCoords.get(i) != null
&& i <= ts.getMaxTextureIndexUsed();
if (!exists) {
if (valid && !wasOn) {
continue;
} else {
checkAndSetTextureArrayUnit(i, gl, rendRecord, caps);
// disable bit in tracking int
enabledTextures &= ~(2 << i);
// disable state
if (gl.isGL2GL3()) {
gl.getGL2GL3().glDisableClientState(GLPointerFunc.GL_TEXTURE_COORD_ARRAY);
}
continue;
}
} else {
checkAndSetTextureArrayUnit(i, gl, rendRecord, caps);
// grab a vboID and make sure it exists and is up to date.
final FloatBufferData textureBufferData = textureCoords.get(i);
updateVBO(textureBufferData, rendRecord, vboID, offsetBytes);
if (!valid || !wasOn) {
// enable bit in tracking int
enabledTextures |= (2 << i);
// enable state
if (gl.isGL2GL3()) {
gl.getGL2GL3().glEnableClientState(GLPointerFunc.GL_TEXTURE_COORD_ARRAY);
}
}
// send data
if (gl.isGL2ES1()) {
gl.getGL2ES1().glTexCoordPointer(textureBufferData.getValuesPerTuple(), GL.GL_FLOAT, 0,
offsetBytes);
}
offsetBytes += textureBufferData.getBufferLimit() * 4;
}
}
}
rendRecord.setEnabledTextures(enabledTextures);
rendRecord.setTexturesValid(true);
}
if (vertexCoords != null) {
updateVBO(vertexCoords, rendRecord, vboID, offsetBytes);
if (gl.isGL2ES1()) {
gl.getGL2ES1().glVertexPointer(vertexCoords.getValuesPerTuple(), GL.GL_FLOAT, 0, offsetBytes);
}
if (gl.isGL2GL3()) {
gl.getGL2GL3().glEnableClientState(GLPointerFunc.GL_VERTEX_ARRAY);
}
} else {
if (gl.isGL2GL3()) {